package array;

import java.util.HashMap;
import java.util.HashSet;

public class L205 {
    public boolean isIsomorphic(String s, String t) {
        if (s.length() != t.length()) {
            return false;  // 如果长度不一样，肯定不是同构
        }

        // 定义两个 HashMap 来存储字符的映射关系
        HashMap<Character, Character> mapS = new HashMap<>();
        HashMap<Character, Character> mapT = new HashMap<>();

        for (int i = 0; i < s.length(); i++) {
            char charS = s.charAt(i);
            char charT = t.charAt(i);

            // 检查 s->t 映射
            if (mapS.containsKey(charS)) {
                if (mapS.get(charS) != charT) {
                    return false;  // 如果映射不一致，返回 false
                }
            } else {
                mapS.put(charS, charT);  // 建立 s 到 t 的映射
            }

            // 检查 t->s 映射，确保映射是双向唯一的
            if (mapT.containsKey(charT)) {
                if (mapT.get(charT) != charS) {
                    return false;  // 如果映射不一致，返回 false
                }
            } else {
                mapT.put(charT, charS);  // 建立 t 到 s 的映射
            }
        }

        return true;  // 遍历结束后，没有发现不一致的映射，返回 true

    }

    public static void main(String[] args) {
        L205 l205 = new L205();
        System.out.println(l205.isIsomorphic("egg", "add"));
    }
}
